/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package separar_faturas;

import static java.lang.System.exit;

import java.io.FileNotFoundException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.*;
import java.io.FileWriter;

/**
 *
 * @author fabio_000
 */
public class Separar_faturas {

    /**
     * @param args the command line arguments
     */
    static String separador;
    static int n_digitos;
    static String path;
    static String path2;
    
    public static void main(String[] args) {
        try {
            if(args.length!= 4){
                System.out.println("Deve inserir 4 argumentos: numero de digitos, separador, caminho do ficheiro a ler e caminho do ficheiro para escrever");
                exit(1);
            }
            n_digitos = Integer.parseInt(args[0]);
            separador = args[1];
            path = args[2];
            path2 = args[3];
            ArrayList<String> lista = new ArrayList<>();
            
            
            File f = new File(path);
            File f_e = new File (path2);
            BufferedReader br = new BufferedReader(new FileReader(f));
            String buffer;
            int cont;
            BufferedWriter bw = new BufferedWriter(new FileWriter(f_e));
            
            while ((buffer = br.readLine())!= null) {
                cont=0;
                if(buffer.length()==n_digitos){
                    for(int i = 0; i<buffer.length()&& cont ==0; i++){
                        if(!Character.isDigit(buffer.charAt(i))){
                            cont = 1;
                            break;
                        }
                    }
                    if(cont == 0){
                        lista.add(buffer);
                    }
                }    
            }
            ArrayList<String> novo = new ArrayList<>();
            String maior;
            while (!lista.isEmpty()){
                maior=lista.get(0);
                for(int i =1;i<lista.size();i++){
                    if(maior.compareToIgnoreCase(lista.get(i))>0){
                        maior = lista.get(i);
                    }
                }
                novo.add(maior);
                lista.remove(lista.indexOf(maior));
            }
            
            for(int i = 0;i<novo.size();i++){
                bw.write(novo.get(i));
                if(i!=novo.size()-1)
                    bw.write(separador+" ");
            }
            bw.write(".");
            bw.write(System.getProperty("line.separator")+novo.size());
            bw.flush();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Separar_faturas.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Separar_faturas.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
}
